<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <p>
            <!-- computed里面定义的属性 -->
            <input type="checkbox" v-model="boo" > 全选 
        </p>
        <h1>------------------------------</h1>
        <ul>
            <li v-for="(item,index) in listFx" :key="index">
                <!-- 复选框 -->
                <input type="checkbox" v-model="item.flag">  
                <span>{{item.title}}</span>
            </li>
        </ul>
        
    </div>
</body>
</html>
<script>
    const vm=new Vue({
        el:'#app',
        data:{
            // checkAll:false,
            listFx:[
                {
                    flag:false,
                    title:'第一组01',
                    pName:'我服了'
                },
                {
                    flag:false,
                    title:'第一组02',
                    pName:'我服了'
                },
                {
                    flag:false,
                    title:'第一组03',
                    pName:'我服了'
                },
                {
                    flag:false,
                    title:'第一组04',
                    pName:'我服了'
                },
                {
                    flag:false,
                    title:'第一组05',
                    pName:'我服了'
                },
            ]
        },
        computed: {
            boo: {
                get() {
                    /* 
                       1.数组every原理:判断数组中所有元素是否都满足条件
                       2.every的返回值：当数组中所有元素都满足条件返回true，有一个不满足条件返回false
                       3.反选原理：当所有复选框都为true时，则全选框处于选中状态，否则全选不选中
                    */ 
                    let status=this.listFx.every(item=>{
                        return item.flag 
                    })         
                    return status           
                },
                set(status) {
                    /* 
                    全选：点击全选框让所有复选框状态和全选框保持一致
                    */
                    // for循环遍历数组
                    for ( let i = 0; i < this.listFx.length; i++) {
                        this.listFx[i].flag=status
                    }
                }
            }
        },
    })
    // console.log(vm.$options.el)
    // console.log(vm.listFx)
    // let App=document.getElementById('app')
    // // console.log(App)
    // console.log(vm)
</script>